package com.hzw.saas.api.storage;

import java.util.List;

import com.hzw.saas.api.storage.bo.StorageCapacityBO;
import com.hzw.saas.api.storage.bo.StorageSpaceCapacityBO;

/**
 * 存储统计接口
 *
 * @author zzl
 * @since 05/25/2021
 */
public interface IStorageService {

    /**
     * 获取用户统计容量
     *
     * @param userId 用户ID
     * @return 存储统计数据
     */
    StorageCapacityBO getStorageCapacity(String userId, boolean checkExpired);

    /**
     * 获取用户指定存储空间统计容量
     *
     * @param userId  用户ID
     * @param spaceId 存储空间ID
     * @return 存储统计数据
     */
    StorageSpaceCapacityBO getStorageCapacity(String userId, String spaceId, boolean checkExpired);

    /**
     * 指定长度文件存储到用户空间后，是否会超出容量大小
     *
     * @param userId
     * @param spaceId
     * @param length  增加文件长度，单位：byte
     * @return
     */
    void assertNotOverSize(String userId, String spaceId, long length);

    /**
     * 指定文件和目录到用户存储空间后，是否会超出容量大小
     *
     * @param userId    用户ID
     * @param spaceId   存储空间ID
     * @param fileIds   增加的文件ID列表
     * @param folderIds 增加的目录ID列表
     * @return 容量是否超限, true-是，false-否
     */
    void assertNotOverSize(String userId, String spaceId, List<String> fileIds, List<String> folderIds);

}
